home *** CD-ROM | disk | FTP | other *** search
/ Floppyshop 2 / Floppyshop - 2.zip / Floppyshop - 2.iso / art&graf.ix / art-3139 / boot_pic.mug / tn1_prog.s < prev   
Text File  |  1987-04-21  |  5KB  |  201 lines

  1. ;
  2. ; Tiny '.TN1' Picture & Program Booter v1.0 !!
  3. ; --------------------------------------------
  4. ;
  5. ; Coded by: Mike Mee (but credit MUG U.K if ya use it Bruce !!)
  6. ;
  7. ; v1.0 - Adapted from Degas Picture & Program Booter v1.0
  8. ;
  9. ;
  10. ; Use Low res Tiny pictures only and alter the appropriate line for
  11. ; pictures' length !!
  12. ;
  13. ; Best used on a disk where all programs 'AUTO' load from the menu
  14. ; and not from desktop - as GEM will never be resident !!
  15. ;
  16. ; 1 cluster saved due to no AUTO folder & stacks saved on a well
  17. ; compressed TINY picture !!
  18. ;
  19. ; No idea if this works on an 512K ST/512K or 1040K STE !!
  20. ; Although no illegal routines are employed - so it should work OK !!
  21. ;
  22.  
  23. yes    equ    1
  24. no    equ    0
  25.  
  26. text_on    equ    no    ; if no = saves 12 bytes + length of text !!
  27.  
  28. pic_adr    equ    $20000
  29. buffer    equ    $27d00
  30.  
  31.     opt    p+,o+,d-,s-
  32.  
  33.     bra.s    start
  34.     dc.b    "Coded by: MUG U.K",191," - 16/10/1991",0
  35.  
  36. start    
  37.     ifne    text_on
  38.     pea    text(pc) 
  39.     move.w    #9,-(a7)
  40.     trap    #1
  41.     addq.w    #6,a7
  42.     endc
  43.  
  44.     lea    filename(pc),a0    ; file to load
  45.     move.l    #pic_adr-34,d6    ; destination address
  46.     move.l    #3410,d7         ; length = ????? bytes
  47.  
  48. loadit    lea    handle(pc),a6    
  49.     clr.w    -(a7)         ; mode = 0 (open to read)
  50.     move.l    a0,-(a7)        ; filename to open
  51.     move.w    #$3d,-(a7)    ; f_open
  52.     trap    #1        ; do it !!
  53.     addq.l    #8,a7        ; tidy stack
  54.     move.w    d0,(a6)         ; store file handle returned
  55.  
  56.     move.l    d6,-(a7)        ; address to load to
  57.     move.l    d7,-(a7)        ; amount to read in
  58.     move.w    d0,-(a7)        ; file handle
  59.     move.w    #$3f,-(a7)    ; f_read
  60.     trap    #1        ; do it
  61.     adda.l    #$c,a7        ; tidy stack
  62.  
  63.     move.w    (a6),-(a7)    ; file handle
  64.     move.w    #$3e,-(a7)    ; f_close
  65.     trap    #1        ; do it !!
  66.     addq.l    #4,a7        ; tidy stack
  67.  
  68.     lea    pic_adr-34,a0
  69.     lea    buffer,a1
  70.  
  71. ; Source for unpacking Tiny-pictures - Written by Axe of Delight
  72. ; Assemble with Devpac 2.08, Tab-position: 10
  73. ; You need source (packed tiny screen) and destination (screen address)
  74. ; for unpacking. After unpacking, the palette is saved at 'tinpal'.
  75.  
  76. tiny:    movem.l    d1-d6/a2-a5,-(sp)
  77.     bsr    t_getpal        ; read resolution and palette
  78.     move.l    a4,d5
  79.     move.l    a1,d6
  80.     add.l    #$7d00,d6
  81.     move.l    a1,d4
  82.     add.l    #$a0,d4
  83.     bra.s    t17a0a
  84. t179be:    moveq    #0,d0
  85.     move.b    (a5)+,d0
  86.     beq.s    t179ce
  87.     cmp.b    #1,d0
  88.     beq.s    t179d6
  89.     ext.w    d0
  90.     bra.s    t179de
  91. t179ce:    move.b    (a5)+,d0
  92.     lsl.w    #8,d0
  93.     move.b    (a5)+,d0
  94.     bra.s    t179de
  95. t179d6:    move.b    (a5)+,d0
  96.     lsl.w    #8,d0
  97.     move.b    (a5)+,d0
  98.     neg.w    d0
  99. t179de:    tst.w    d0
  100.     bmi.s    t179ea
  101.     move.b    (a4)+,d3
  102.     lsl.w    #8,d3
  103.     move.b    (a4)+,d3
  104.     bra.s    t17a2e
  105. t179ea:    neg.w    d0
  106.     bra.s    t17a06
  107. t179ee:    move.b    (a4)+,(a1)+
  108.     move.b    (a4)+,(a1)+
  109.     lea    $9e(a1),a1
  110.     cmp.l    d6,a1
  111.     blt.s    t17a06
  112.     lea    $ffff8308(a1),a1
  113.     cmp.l    d4,a1
  114.     blt.s    t17a06
  115.     lea    $ffffff62(a1),a1
  116. t17a06:    dbf    d0,t179ee
  117. t17a0a:    cmp.l    d5,a5
  118.     blt.s    t179be
  119.     moveq    #1,d0
  120. t_end:    movem.l    (sp)+,d1-d6/a2-a5
  121.     bra.s    cont
  122.  
  123. t17a18:    move.w    d3,(a1)+
  124.     lea    $9e(a1),a1
  125.     cmp.l    d6,a1
  126.     blt.s    t17a2e
  127.     lea    $ffff8308(a1),a1
  128.     cmp.l    d4,a1
  129.     blt.s    t17a2e
  130.     lea    $ffffff62(a1),a1
  131. t17a2e:    dbf    d0,t17a18
  132.     cmp.l    d5,a5
  133.     blt.s    t179be
  134.     moveq    #1,d0
  135.     movem.l    (sp)+,d1-d6/a2-a5
  136.     rts
  137.  
  138. t_getpal: cmpi.b    #2,(a0)+        ; Color mode?
  139.     ble.s    t_color
  140.     addq.l    #4,a0
  141. t_color:    moveq    #31,d0        ; install palette
  142.     lea    tinpal(pc),a2
  143. t_copypal:move.b    (a0)+,(a2)+
  144.     dbra    d0,t_copypal
  145.     move.b    (a0)+,d1
  146.     lsl.w    #8,d1
  147.     move.b    (a0)+,d1
  148.     addq.l    #2,a0
  149.     movea.l    a0,a5        ; beginning of Data
  150.     ext.l    d1
  151.     adda.l    d1,a0
  152.     movea.l    a0,a4        ; end of Data
  153.     moveq    #1,d0
  154.     rts
  155.  
  156. cont    lea    tinpal(pc),a0    ; pictures palette
  157.     lea    $ffff8240.W,a1    ; ST palette
  158.     movem.l    (a0),d0-d7    ; move from one
  159.     movem.l    d0-d7,(a1)    ; to the other
  160.  
  161.     move.l    $44e.w,a0        ; current screen address
  162.     lea    buffer,a1        ; source
  163.     move.w    #$1f3f,d0        ; (32000/4)-1 = $1F3F (7999)
  164. bmove    move.l    (a1)+,(a0)+    ; move it
  165.     dbf    d0,bmove        ; loop
  166.  
  167.     pea    null(pc)        ; command line
  168.     pea    null(pc)        ; environment
  169.     pea    progfile(pc)    ; filename
  170.     clr.w    -(sp)        ; load & execute
  171.     move.w    #$4b,-(sp)    ; p_exec
  172.     trap    #1        ; do it !!
  173.     lea    16(sp),sp        ; tidy stack
  174.  
  175. exit    rts            ; bye bye
  176.  
  177. null    ds.l    0
  178. filename    dc.b    '\source.tn1',0    
  179. progfile    dc.b    '\killclod.prg',0
  180.  
  181.  
  182.     ifne    text_on
  183. text    dc.b    $1B,'E'
  184.     dc.b    $1b,89,44,35    ; Text at 12 down & 3 in !!
  185.  
  186.     ;     0123456789012345678901234567890123456789 - 40 chars
  187.     dc.b    'Virus Free Disk From The Source !!',0
  188.     endc
  189.  
  190. tinpal    ds.w    16
  191. handle    ds.w    1
  192. ;
  193. ; Alter length of 'blanks' to ensure length of bootsector is equal
  194. ; to 480 bytes !!
  195. ;
  196.     ifne    text_on
  197. blanks    ds.w    2    ; amount when text function is on
  198.     elseif
  199. blanks    ds.w    28    ; and when it's off
  200.     endc
  201.